{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "t90y1ms_7_ML"
   },
   "source": [
    "# Gradient Boosting From Scratch"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "m7TY2Grc8B9J"
   },
   "source": [
    "Let's implement gradient boosting from scratch."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "XiSFTj9lssWl"
   },
   "outputs": [],
   "source": [
    "from __future__ import print_function\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "\n",
    "from matplotlib import pyplot as plt\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "from tensorflow.keras.datasets import boston_housing\n",
    "\n",
    "np.random.seed(0)\n",
    "\n",
    "plt.rcParams['figure.figsize'] = (8.0, 5.0)\n",
    "plt.rcParams['axes.labelsize'] = 20\n",
    "plt.rcParams['ytick.labelsize'] = 14\n",
    "plt.rcParams['xtick.labelsize'] = 14"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 228
    },
    "colab_type": "code",
    "id": "xbsRYs7SDZHr",
    "outputId": "feea96a6-f213-4ad3-aba5-c71b3b2364f4"
   },
   "outputs": [],
   "source": [
    "(x_train, y_train), (x_test, y_test) = boston_housing.load_data()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(404, 13)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Exploration"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "PNb6fTlVPPkG"
   },
   "source": [
    "Let explore the data before building a model. The goal is to predict the median value of owner-occupied homes in $1000s.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "y-D1SsHhPYUq"
   },
   "outputs": [],
   "source": [
    "# Create training/test dataframes for visualization/data exploration.\n",
    "# Description of features: https://www.cs.toronto.edu/~delve/data/boston/bostonDetail.html\n",
    "feature_names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD','TAX', 'PTRATIO', 'B', 'LSTAT']\n",
    "df_train = pd.DataFrame(x_train, columns=feature_names)\n",
    "df_test = pd.DataFrame(x_test, columns=feature_names)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "M9se9qzWHWkD"
   },
   "source": [
    "Correlation analysis."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 329
    },
    "colab_type": "code",
    "id": "VuYvJ-2_OgVP",
    "outputId": "cbfcb9c1-c561-4dce-da6e-67d28d55d596"
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style  type=\"text/css\" >\n",
       "    #T_a435440a_9200_11e9_944f_42010a8a0008row0_col0 {\n",
       "            background-color:  #7da0f9;\n",
       "            color:  #000000;\n",
       "        }    #T_a435440a_9200_11e9_944f_42010a8a0008row1_col0 {\n",
       "            background-color:  #f6bfa6;\n",
       "            color:  #000000;\n",
       "        }    #T_a435440a_9200_11e9_944f_42010a8a0008row2_col0 {\n",
       "            background-color:  #688aef;\n",
       "            color:  #000000;\n",
       "        }    #T_a435440a_9200_11e9_944f_42010a8a0008row3_col0 {\n",
       "            background-color:  #e2dad5;\n",
       "            color:  #000000;\n",
       "        }    #T_a435440a_9200_11e9_944f_42010a8a0008row4_col0 {\n",
       "            background-color:  #7093f3;\n",
       "            color:  #000000;\n",
       "        }    #T_a435440a_9200_11e9_944f_42010a8a0008row5_col0 {\n",
       "            background-color:  #eb7d62;\n",
       "            color:  #000000;\n",
       "        }    #T_a435440a_9200_11e9_944f_42010a8a0008row6_col0 {\n",
       "            background-color:  #80a3fa;\n",
       "            color:  #000000;\n",
       "        }    #T_a435440a_9200_11e9_944f_42010a8a0008row7_col0 {\n",
       "            background-color:  #edd2c3;\n",
       "            color:  #000000;\n",
       "        }    #T_a435440a_9200_11e9_944f_42010a8a0008row8_col0 {\n",
       "            background-color:  #7da0f9;\n",
       "            color:  #000000;\n",
       "        }    #T_a435440a_9200_11e9_944f_42010a8a0008row9_col0 {\n",
       "            background-color:  #6e90f2;\n",
       "            color:  #000000;\n",
       "        }    #T_a435440a_9200_11e9_944f_42010a8a0008row10_col0 {\n",
       "            background-color:  #6687ed;\n",
       "            color:  #000000;\n",
       "        }    #T_a435440a_9200_11e9_944f_42010a8a0008row11_col0 {\n",
       "            background-color:  #f4c6af;\n",
       "            color:  #000000;\n",
       "        }    #T_a435440a_9200_11e9_944f_42010a8a0008row12_col0 {\n",
       "            background-color:  #3b4cc0;\n",
       "            color:  #f1f1f1;\n",
       "        }    #T_a435440a_9200_11e9_944f_42010a8a0008row13_col0 {\n",
       "            background-color:  #b40426;\n",
       "            color:  #f1f1f1;\n",
       "        }</style><table id=\"T_a435440a_9200_11e9_944f_42010a8a0008\" ><thead>    <tr>        <th class=\"blank level0\" ></th>        <th class=\"col_heading level0 col0\" >price</th>    </tr></thead><tbody>\n",
       "                <tr>\n",
       "                        <th id=\"T_a435440a_9200_11e9_944f_42010a8a0008level0_row0\" class=\"row_heading level0 row0\" >CRIM</th>\n",
       "                        <td id=\"T_a435440a_9200_11e9_944f_42010a8a0008row0_col0\" class=\"data row0 col0\" >-0.378498</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_a435440a_9200_11e9_944f_42010a8a0008level0_row1\" class=\"row_heading level0 row1\" >ZN</th>\n",
       "                        <td id=\"T_a435440a_9200_11e9_944f_42010a8a0008row1_col0\" class=\"data row1 col0\" >0.380299</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_a435440a_9200_11e9_944f_42010a8a0008level0_row2\" class=\"row_heading level0 row2\" >INDUS</th>\n",
       "                        <td id=\"T_a435440a_9200_11e9_944f_42010a8a0008row2_col0\" class=\"data row2 col0\" >-0.476743</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_a435440a_9200_11e9_944f_42010a8a0008level0_row3\" class=\"row_heading level0 row3\" >CHAS</th>\n",
       "                        <td id=\"T_a435440a_9200_11e9_944f_42010a8a0008row3_col0\" class=\"data row3 col0\" >0.168661</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_a435440a_9200_11e9_944f_42010a8a0008level0_row4\" class=\"row_heading level0 row4\" >NOX</th>\n",
       "                        <td id=\"T_a435440a_9200_11e9_944f_42010a8a0008row4_col0\" class=\"data row4 col0\" >-0.438328</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_a435440a_9200_11e9_944f_42010a8a0008level0_row5\" class=\"row_heading level0 row5\" >RM</th>\n",
       "                        <td id=\"T_a435440a_9200_11e9_944f_42010a8a0008row5_col0\" class=\"data row5 col0\" >0.681483</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_a435440a_9200_11e9_944f_42010a8a0008level0_row6\" class=\"row_heading level0 row6\" >AGE</th>\n",
       "                        <td id=\"T_a435440a_9200_11e9_944f_42010a8a0008row6_col0\" class=\"data row6 col0\" >-0.364173</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_a435440a_9200_11e9_944f_42010a8a0008level0_row7\" class=\"row_heading level0 row7\" >DIS</th>\n",
       "                        <td id=\"T_a435440a_9200_11e9_944f_42010a8a0008row7_col0\" class=\"data row7 col0\" >0.2539</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_a435440a_9200_11e9_944f_42010a8a0008level0_row8\" class=\"row_heading level0 row8\" >RAD</th>\n",
       "                        <td id=\"T_a435440a_9200_11e9_944f_42010a8a0008row8_col0\" class=\"data row8 col0\" >-0.375515</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_a435440a_9200_11e9_944f_42010a8a0008level0_row9\" class=\"row_heading level0 row9\" >TAX</th>\n",
       "                        <td id=\"T_a435440a_9200_11e9_944f_42010a8a0008row9_col0\" class=\"data row9 col0\" >-0.448737</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_a435440a_9200_11e9_944f_42010a8a0008level0_row10\" class=\"row_heading level0 row10\" >PTRATIO</th>\n",
       "                        <td id=\"T_a435440a_9200_11e9_944f_42010a8a0008row10_col0\" class=\"data row10 col0\" >-0.49399</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_a435440a_9200_11e9_944f_42010a8a0008level0_row11\" class=\"row_heading level0 row11\" >B</th>\n",
       "                        <td id=\"T_a435440a_9200_11e9_944f_42010a8a0008row11_col0\" class=\"data row11 col0\" >0.343953</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_a435440a_9200_11e9_944f_42010a8a0008level0_row12\" class=\"row_heading level0 row12\" >LSTAT</th>\n",
       "                        <td id=\"T_a435440a_9200_11e9_944f_42010a8a0008row12_col0\" class=\"data row12 col0\" >-0.730793</td>\n",
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_a435440a_9200_11e9_944f_42010a8a0008level0_row13\" class=\"row_heading level0 row13\" >price</th>\n",
       "                        <td id=\"T_a435440a_9200_11e9_944f_42010a8a0008row13_col0\" class=\"data row13 col0\" >1</td>\n",
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x7f26e0138f90>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train['price'] = y_train\n",
    "corr = df_train.corr()[['price']]\n",
    "corr.style.background_gradient(cmap='coolwarm')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "bWOMgT4pPNNq"
   },
   "source": [
    "It looks like `LSTAT` is negatively correlated with price. Let's plot it out:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 351
    },
    "colab_type": "code",
    "id": "DxCRtzv9SDuE",
    "outputId": "e5161606-9696-4d36-fd68-5e80750f7b5c"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.regplot(x='LSTAT', y='price', data=df_train, fit_reg=False);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "rF5ZieXsSnpp"
   },
   "source": [
    "Most of the prices are less than 30:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 327
    },
    "colab_type": "code",
    "id": "rqHdIwn5Skbw",
    "outputId": "b46ed3c1-ab05-4599-f0ef-b2c08a3a2c20"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df_train.price.hist();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "zEs8r-YJ2qgc"
   },
   "source": [
    "## Train Gradient Boosting model\n",
    "\n",
    "Training Steps to build model an ensemble of $K$ estimators.\n",
    "1. At $k=0$ build base model ,  $\\hat{y}_{0}$: $\\hat{y}_{0}=base\\_predicted$\n",
    "3. Compute residuals $r = \\sum_{i=0}^n (y_{k,i} - \\hat{y}_{k,i})$; $n: number\\ train\\ examples$\n",
    "4. Train new model, fitting on residuals, $r$. We will call the predictions from this model $e_{k}\\_predicted$\n",
    "5. Update model predictions at step $k$ by adding residual to current predictions: $\\hat{y}_{k} = \\hat{y}_{k-1} + e_{k}\\_predicted$\n",
    "6. Repeat steps 2 - 5 `K` times.\n",
    "\n",
    "In summary, the goal is to build K estimators that learn to predict the residuals from the prior model; thus we are learning to \"correct\" the\n",
    "predictions up until this point.\n",
    "<br>\n",
    "\n",
    "$\\hat{y}_{K} = base\\_predicted\\ +\\ \\sum_{j=1}^Ke_{j}\\_predicted$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "ZOa5-a_8L_oA"
   },
   "source": [
    "### Build base model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "iE7357JRL-Xv"
   },
   "outputs": [],
   "source": [
    "class BaseModel(object):\n",
    "    \"\"\"Initial model that predicts mean of train set.\"\"\"\n",
    "\n",
    "    def __init__(self, y):\n",
    "        self.train_mean = y.mean()\n",
    "\n",
    "    def predict(self, x):\n",
    "        \"\"\"Return train mean for every prediction.\"\"\"\n",
    "        return np.ones(x.shape[0]) * self.train_mean\n",
    "\n",
    "def pred(x, model):\n",
    "    result = model.predict(x)\n",
    "    return result.squeeze()  # Remove unnecessary dimension from prediction.\n",
    "\n",
    "def compute_residuals(label, pred):\n",
    "    \"\"\"Compute difference of labels and predictions.\n",
    "\n",
    "    When using mean squared error loss function, the residual indicates the \n",
    "    negative gradient of the loss function in prediction space. Thus by fitting\n",
    "    the residuals, we performing gradient descent in prediction space. See for\n",
    "    more detail:\n",
    "\n",
    "    https://explained.ai/gradient-boosting/L2-loss.html\n",
    "    \"\"\"\n",
    "    return label - pred\n",
    "\n",
    "def compute_rmse(x):\n",
    "    return np.sqrt(np.mean(np.square(x)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 35
    },
    "colab_type": "code",
    "id": "kzdhD6Su2LbF",
    "outputId": "64ed7c2f-946b-4ffe-fe34-5887edf2ad0f"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9.149363873885578"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Build a base model that predicts the mean of the training set.\n",
    "base_model = BaseModel(y_train)\n",
    "test_pred = base_model.predict(x_test)\n",
    "test_residuals = compute_residuals(y_test, test_pred)\n",
    "compute_rmse(test_residuals)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "28YAYLk4e1IU"
   },
   "source": [
    "Let's see how the base model performs on out test data. Let's visualize performance compared to the `LSTAT` feature."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 351
    },
    "colab_type": "code",
    "id": "a-4Ob3GcfFC8",
    "outputId": "932f10f0-ad9f-466e-c099-1e5a2f868fb1"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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jS984QvU19djt9uZPn06jY2N7NmzZ8i28W66HTt2sGLFCtxuN2VlZVx33XXs378/6flNFJN2JJ+JtO/6pesnqFdCLvnqV7/KU089xUc/+lE+8pGPsGPHDv7t3/6Nv/71rzz33HPD7nvLLbdQUVHBY489xsc+9jEWL14cW1dRUTHsvl//+tcxDINLLrmEWbNm4fF4eO6559iwYQO7du3il7/8ZVbO71Of+hS7du3ik5/8JDabjccee4yNGzeye/dufve73w1JxOnq6mLZsmW4XC4aGxsxDIPqalOmqqenh5UrV/L6669z0UUX8dnPfpZIJMJTTz3FDTfcwL59+7jnnntix9Ja86lPfYrHHnuMefPm8cUvfpFAIMCDDz7IW2+9ldF5PP7446xZswa/388111zD9ddfT09PD2+88Qbf//73ufXWW1m8eDF33nknd911F3PmzEkw5CP56A8dOsTll19Oa2srK1eu5Prrr6e5uZlt27bx+OOP88gjj/B3f/d3Q/b7/e9/z2OPPca1117L5z//ed5++22eeOIJdu3axdtvv52zt7hJa+RzJSmcj9z13/t4u7U3190YlvNmlnHnRxeOaxuvvvoqb731VswHHAqFWLlyJTt27OC1117j4osvTrlv1Ig89thjfPzjH88oYuPxxx8f4v6JRCKsXbuW//iP/+CLX/wil1xyScbnM5j9+/ezb98+KitN9+S3v/1trrrqKn7/+9/z0EMP8ZnPfCZh+7feeovPfOYzPPjgg1itiabitttu4/XXX+fee+/lq1/9amy5z+fj4x//ON/5znf45Cc/GXvYbd26lccee4xly5axY8cOnE5TbfWuu+5i6dKlaZ9DZ2cnN9xwA6FQiOeee44rr7wyYX1LSwsAixcvZvHixdx1113U19fHRu/p8PnPf57W1lbuuecevvGNb8SWr1+/niuuuIKbb76ZI0eO4HIlegF++9vf8tRTT7Fq1arYsttvv53vfe97PPjggwnXaSKZtO6aqLTvcIyHpLCQv9xxxx0Jk3xWqzXmgnnttdfGrd1k/n3DMNiwYQMATz31VFba+da3vhUz8ABOp5Pvfve7ADz44INDtrfb7fzwhz8cYuBPnjzJQw89RENDwxDD5XQ6uffee9Fa8/DDZ+SrfvGLXwDwne98J2bgAaZOncq3vvWttM+hqamJ3t5ebr311iEGHuCss85K+1jJaGlp4emnn2b27NlDzu2yyy7j+uuvp6uri+3bhxbv+fSnP51g4AHWrVsHjO/vZyQm7Ui+cUEjTW804XSl1m/v8fWwdvHaCexVbhjvEXKh0NAwNEO8rq4OgO7u7nFr9+TJk/zgBz/giSee4P333+fUqVMJ648dO5aVdpIZxcsvvxyLxcLrr78+ZF19fT0zZswYsnzXrl2Ew+EE/3Y8wWAQIMEX/ec//xnDMLj88suHbJ9JiOOrr5olLK699tq098mE6HVYvnx5UkG/lStX8tBDD/H6669z0003JazL1e9nJCa1kd+6dyvegDfp5Ot4SQoL+Usy33l0FDtelbR6enpYunQphw4d4uKLL+amm25i6tSpWK1Wenp62LRpU8qJyUyJ+tPjsVqtVFVV0dEx1C1ZU5PcnXny5EnANPa7du1K2Z7Xe0Y22+PxMHXq1KSGM1U7yejp6QHM8MfxIDrJXlubPKIuujzaj3hy8ftJh0nrrsmVpLAgxPPzn/+cQ4cOceedd7Jz505+8pOfcM8997Bx40b+/u//PqttHT8+uEqnOe/Q2dmZtNZAKkXEaFz5P//zP6O1TvnZsWNHwj5dXV2xUX487e3p1xeKGtJsvd0MJnpuqfrU1taWsF0hMGmNPOROUlgoTiwWC5DZqO2vf/0rAJ/4xCeGrHvhhRey07Fhjvfyyy8TDoe58MIL0z7OxRdfjGEYvPTSS2nvc9FFFxGJRHj55ZeHrMtEtmDZsmUA/OEPfxhhSxPDMDK6H9Hr8PLLLxMKhYasjz64LrroorSPmWsmtZEHc0S/ful6nrnpGXat28UzNz3D+qXrZQQvZMy0adMAOHr0aNr7RGPtBxu6119/PTYpmi3uvvvuBN+wz+fj9ttvB4hNMKfDjBkz+Id/+Ad2797N3XffndSIvvfeexw6dCj2PXr8b3zjG/h8vtjyrq6uhFDLkbj55pspKyvj/vvv58UXXxyyPhpdE2XatGk0NzenffyzzjqLq6++msOHD3PfffclrNu5cycPP/wwlZWVrF5dOG7cSeuTF4Rsc+mllzJlyhTuu+8+Tp48GfM1f+lLX0r5en/TTTfxgx/8gNtuu40dO3Zwzjnn8O677/L73/+exsZGfvOb32StfwsWLGDhwoUJcfLvvfce11133ZDwyZH48Y9/zLvvvssdd9zBL3/5Sy6//HKqq6tpbW1l//797Nq1i61btzJ37lwArr/+en7zm9/wu9/9jkWLFvGxj32MYDDIf/3Xf7F06VLee++9tNqtqqri4Ycf5pOf/CRXXXUV1157LRdccAG9vb28+eabNDc3JzxcVq1axa9//Ws++tGPctFFF2Gz2bjiiiu44oorUrbx05/+lA996EP87//9v3n66adpaGiIxckbhsEvfvEL3G53Rtcrl4iRF4QsUVlZySOPPMJdd93Fli1bYlEyN954Y0ojP3PmTF566SW+/vWv8/LLL/PUU08xf/58fvKTn/DhD384q0b+P//zP7n77rv51a9+RWtrK7NmzWLjxo18/etfz7giUVlZGS+88AIPPPAADz/8MI888gg+n4/q6mrOOeccfvSjH3H11bHSzyil2LZtG9/73vfYsmULP/7xj6mtrWXt2rXccccdCWGVI3Hdddexe/du7r33Xp599lmefvppKisrmT9/fuzNJMqmTZtQSvHss8/yxBNPEIlEuPPOO4c18meffTa7d+/mnnvu4YknnuD555+nrKyMa665hm984xsZxfXnA1IZapIglaEmLytWrOCFF14g1//XhfSQylCCIAhC2oi7Jk9o62tj+/7tbN+/HY/fQ7mjnMYFjTQuaJRJYEEQRs2kM/L5aExF114QhPFiUrlr9rTuYc22NTS90YRhGNS4ajAMg6Y3mlizbQ17WofKiI438br21a5qnFYnSimcVifVrmpsFhsbntwglaqEUfP888+LP34SM2mMfL4aU9G1FwRhPJk0Rj5fjWkmuvaCIAiZMqmMfD4aU4/fg8PiGHYbu8WOxze0OlGmyCu7IOQ34/F/dNIY+Yk0ppkwUbr2FoslqTiUIAj5QzAYjGkgZYtJY+TztUhI44LGER8sPb4eGhc0jqkdt9tNb29+V38ShMlOb29v1iUTJo2RnyhjmimNCxqxW+x4A96k67Olaz916lS6u7vp7OwkEAiI60YQ8gStNYFAgM7OTrq7u5k6dWpWjz9p4uTztUhIVNd+w5MbaPe2U+GswG6xEwgH6PH14LA4sqJr73A4mD17Nl1dXRw+fDinRQwEQUjEYrHgdruZPXs2DsfwbuVMmVTaNdGkI3/Yn9KY5irpqK2vjUcPPGomafk8lDvNJK3V81dLxqsgCENIV7tmUhl5EGMqCEJxIEZeEAShiBEVSkEQBEGMvCAI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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "feature = df_test.LSTAT\n",
    "\n",
    "# Pick a predictive feature for plotting.\n",
    "plt.plot(feature, y_test, 'go', alpha=0.7, markersize=10)\n",
    "plt.plot(feature, test_pred, label='initial prediction')\n",
    "\n",
    "plt.xlabel('LSTAT', size=20)\n",
    "plt.legend(prop={'size': 20});"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "XnxjXH4WfFSI"
   },
   "source": [
    "There is definitely room for improvement. We can also look at the residuals:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 351
    },
    "colab_type": "code",
    "id": "2n2D88oXfx13",
    "outputId": "1027304d-04d6-4364-d2e8-dde706e53720"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZwAAAEXCAYAAACZNvIiAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi40LCBodHRwOi8vbWF0cGxvdGxpYi5vcmcv7US4rQAAIABJREFUeJztnXmcVOWV97+nu+lulpZmExoDokRcQIMBNyRuJDoxYxLbqNFEA5MZHckk6Jt5k49ZRjPZZ7JI5sVEJ5NodGIyRjR7YnCJImgAoxEXcFAEpNumBRoa6P15/zj1pG5X13prrz7fz+d+qureW/c+t6r7/uo8z3l+R5xzGIZhGEa+qSp2AwzDMIzhgQmOYRiGURBMcAzDMIyCYIJjGIZhFAQTHMMwDKMgmOAYhmEYBcEExzAMwygIJjiGYRhGQTDBMQzDMApCTbEbUEpMnDjRzZgxo9jNMAzDKBs2bNjQ7pyblM6+JjgBZsyYwfr164vdDMMwjLJBRF5Ld1/rUjMMwzAKggmOYRiGURBMcAzDMIyCYGM4WdDSAitX6tLRAWPHQnOzLk1N5XOOUjy3YRiVh1g9nCjz58936SYNbNgAy5ZBT4/eiOvqoLtbb8y1tbB8Ocybl117CnGOUjy3YRjlg4hscM7NT2tfE5wo6QpOSwtceimMGAFjxgzd3tkJvb1w773hI4FCnKMUz20YRnmRieDYGE4IVq7UX/7xbsag67u74f77S/scpXhuwzAqFxOcEKxcqd1MyWhs1P1K+RyleG7DMCoXSxoIQUcHTJmSfJ/aWmhrK+1zlOK5jfzR3d3N7t272b9/P/39/cVujlGCVFdX09DQwPjx46mrq8v58U1wQjB2rHYp1dcn3scPtpfyOUrx3EZ+6O7uZtu2bYwbN44ZM2YwYsQIRKTYzTJKCOccvb297Nu3j23btjF9+vSci451qYWguVmjgGTs3av7lfI5SvHcRn7YvXs348aNY+LEidTW1prYGEMQEWpra5k4cSLjxo1j9+7dOT+HCU4Impu1S6mzM/72zk5NI7744tI+Ryme28gP+/fv57DDDit2M4wy4bDDDmP//v05P64JTgiamnQeSm8vtLZCVxcMDOhja6uuX748u5ThQpyjFM9t5If+/n5GjBhR7GYYZcKIESPyMs5nghOSefN0HsqSJeCcDqA7p6/vvTc3kyILcY5SPLeRH6wbzUiXfP2t2MTPAJk4DRhGOfHiiy9y/PHHF7sZRhmR7t+MTfw0DMMwSg4THMMwDKMgmOAYhmEYBcEEp4RoaYEVK2DRIpg/Xx9XrND1hmHkhh07dvB3f/d3TJ06lbq6OmbMmMH111/Pnj17it20iscEp0TYsEEdmu+8E6qq1FqmqkpfX3qpbjcMIzu2bNnCvHnz+OEPf8ipp57KDTfcwNFHH83y5cs544wzePPNN4vdxIrGBKcEaGnR2jMjRsDkyWopI6KPkyfr+mXLLNIxjGxZunQpbW1tfOc73+GBBx7ga1/7Gg8//DA33HADmzZt4rOf/Wyxm1jRmOCUAFYOwDDyz5YtW3jwwQeZMWMGH/vYxwZt+8IXvsDo0aO56667OHDgQNrH3LFjB//0T//E0UcfTV1dHRMmTOC9730v69atG7LvzTffjIjw6KOP8uMf/5jTTjuNMWPGMGPGDAC2bt2KiLB48WI2b97M5ZdfzuGHH05VVRWPPvroX4/z8ssvc/XVV3PEEUdQW1vL1KlTufrqq3n55ZczPmehMfPOEiCTcgBLlxamTYZRaTzyyCMAnH/++VRVDf6t3dDQwJlnnsmDDz7Ik08+yaJFi1Ie7+mnn+b8889n9+7dXHDBBTQ3N9Pe3s4DDzzAwoULuf/++7nwwguHvO+b3/wmf/jDH7jooos499xz6YgxLtyyZQunnXYas2bN4kMf+hCHDh36qy3RunXreOc738n+/ft573vfywknnMBLL73E3Xffzc9//nNWrVrFKaeckvE5C4UJTglg5QCMYnPOOUPXXXaZ/sA5eBDi3DdZvFiX9nb4wAeGbr/uOrj8cti+Ha66auj2T34SLroINm2Ca68duv1zn4N3vhOeeQbmzs3wguKwadMmAGbNmhV3+zHHHMODDz7I5s2bUwpOX18fl112GZ2dnTzyyCOcffbZf922c+dOTjnlFD760Y+ydevWIY7LDz/8MGvXruXkk0+Oe+zVq1dz44038pWvfGXQeuccV199Nfv27ePuu+/mQx/60F+3/fSnP+WDH/wgV111FS+88MIQQU11zkJhXWolgC8HkAwrB2AY2eF/1Y9N8I/k1+/duzflsX7961+zZcsWPv7xjw8SG4CpU6fyqU99itbWVh566KEh773mmmuS3vgnT57MTTfdNGT9mjVreOmllzjjjDMGiQ3A5ZdfzsKFC9m0aROrV6/O+JyFwiKcEqC5WbPRktWf2btXfcwMIx8EhgiGMGpU8u0TJybfPm1a8u3HHpt8ey6im1yzdu1aAF577TVuvvnmIdv9eMqLL744pFvt1FNPTXrst73tbXHr0Dz99NMAnHfeeXHfd95557F69Wr+/Oc/c9ZZZ2V0zkJhglMCNDfDPfeo7X+8xAErB2AY2eMjmETjF359Y2NjymP59Ol777036X6dcWp8TEnRf55ou29fUwKbdr8+XoSW6pyFwrrUSgArB2AY+efYY48FYPPmzXG3+6gk0RhPEC9eP//5z3HOJVzidY2lcmJOtN2fs7W1Ne72lsi8iXhdhqXiFG6CUyJYOQDDyC/nnnsuAA8++CADAwODtu3fv58nnniCUaNGcfrpp6c8lt/n8ccfz31DE+DHYB5N0P/os/De/va3F6pJGWOCU0I0NWlW0KpVsG6dPi5dapGNYeSCmTNncv7557N161ZWrFgxaNtNN93EgQMHuOqqqxg9enTKY73vfe9j5syZrFixgt/85jdx91m7di0HDx7MSdsBzjzzTI499lhWr17Nz372s0Hbfvazn/H4448za9YsFi5cmLNz5hobwzEMY9hw6623smDBAj7xiU/w0EMPcfzxx/PUU0/xyCOPMGvWLL785S+ndZwRI0awcuVKLrjgAt7znvewYMEC5s6dy6hRo9i+fTvr1q3jlVdeoaWlhVGjRuWk7SLCnXfeybve9S4uv/xy3ve+93HcccexadMmHnjgARoaGvjRj340JCW6lCjdlhmGYeSYmTNnsn79ehYvXsxTTz3FN7/5TbZs2cKyZct48sknmTBhQtrHOumkk3j22Wf59Kc/TUdHBz/84Q/57ne/y4YNGzj55JO56667mDhxYk7bf9ppp7Fu3TquvPJK1q5dy7//+7+zZs0arrjiCtatW8dpp52W0/PlGqv4GcAqfhqVilX8NDLFKn4ahmEYZYuN4RhDaGlR37aVK9V2Z+xYnSvU3GwJDIZhhMcinCJSigXXrC6PYRj5wgSnSJTijd3q8hiGkU9McIpAqd7YrS6PYRj5pKwER0RuFJF1IrJPRHaJyC9FZE7MPiIiN4vIThE5JCKPisjsYrU5HqV6Y8+kLo9hGEamlJXgAOcAtwILgPOAPmCViIwP7PMp4JPAx4FTgDbgDyLSUNimJqZUb+wdHWoSmozaWt3PKD9sCoSRLvn6WykrwXHOXeCc+6FzbqNz7jngKmAScCZodANcD3zNOXefc24j8BGgAbiyWO2OpVRv7FaXp3Kprq6mt7e32M0wyoTe3l6qq6tzftyyEpw4NKDXsCfy+ihgCvCg38E5dwh4DI2KSoJSvbE3N6cWub17dT+jvGhoaGDfvn3FboZRJuzbt4+Ghtx3CpW74CwHngHWRl77og9vxOz3RmDbIETkGhFZLyLrd+3alZ9WxlCqN/bmZo2s4pTwAKwuTzkzfvx49uzZQ3t7Oz09Pda9ZgzBOUdPTw/t7e3s2bOH8ePHp35ThpTtxE8R+RawEFjonOsPexzn3O3A7aDWNjlqXlJKteCar8uzbJnW4WlsVAHq6VEBrKuzujzlSl1dHdOnT2f37t1s3bqV/v7Q/zJGBVNdXU1DQwPTp0+PW3U0W8pScETk28AHgXOdc68ENvnKRJOBbYH1kwPbik4p39h9XZ7779ekhbY27dpbskQF0MSmfKmrq6OpqSlhxUjDyDdlZ94pIsuBy1GxeTFmmwA7gf9wzn0lsq4ezVT7v86525Idu9DmnS0t0Rt70ELGbuyGYZQLmZh3llWEIyIr0My09wN7RMSPy3Q65zqdc05EbgE+IyIvAZuBzwGdwI+L0ugk+IJrS5cWuyWGYRj5p6wEB/C35odi1n8BuDny/N+AkcAKYBzwFHC+c25/IRpoGIZhxKesBMc5J2ns41DxuTnf7TEMwzDSp9zTog3DMIwywQTHMAzDKAgmOIZhGEZBMMExDMMwCoIJjmEYhlEQTHAMwzCMgmCCYxiGYRQEExzDMAyjIJjgGIZhGAXBBMcwDMMoCCY4hmEYRkEwwTEMwzAKggmOYRiGURBMcAzDMIyCYIJjGIZhFAQTHMMwDKMgmOAYhmEYBSFnFT9FZAJwFnAQWOWc68/VsY3i09ICK1fq0tEBY8dCc7MuTU3Fbp1hGOVAxhGOiFwnIk+JyPjAunnAS8DPgN8Aa0RkdO6aaRSTDRvg0kvhzjuhqgqmTNHHO+/U9Rs2FLuFhmGUA2G61C4HnHNud2DdvwPjgB+ignMK8I/ZN8/wtLTAihWwcCFMnw7jx+vjwoW6vqUlf+ddtgxGjIDJk6G+HkT0cfJkXb9sWf7ObxhG5RBGcI4B/uJfiMhE4Gzgv5xzf++cuwhYB1yZmyYaPsK49VbYuFG7tERg3z59feut+Ys0Vq6Enh4YMyb+9jFjoLsb7r8/9+c2DKOyCCM4E4C2wOszI4/BW87jwJFhG2VE8RHGwIA+r6rS5/v3w4EDurz6qr6+7DKNeObPh0WLchP5rFyp4zXJaGzU/QzDMJIRRnB2AxMDr88GBoA1gXUOqM+iXUYEH2Hs3w+9vfrY1aXbRHTp6oLnnoOdO6G9PbdjLB0dUFeXfJ/aWt3PMAwjGWEE50XgIhGZICKNwAeBdc65fYF9ZgCtOWjfsMdHGK+/rsIiomLixcbjHPT1wa5duR1jGTtWu8yS0dOTOgoyDMMIIzjLgSZgB7AdmAzcGrPP6cCz2TXNgGiEceiQvg6KDGj3mnPR9QcPDt6e7RhLc3Pq6GXvXt3PMAwjGRkLjnPuF2gG2vPAJuCfnXN3++0icg4wBvh9jto4rPERRl9f/O0DA4NFqD/O7Kdsxliam7XLrLMz/vbOThXEiy8Od3zDMIYPoZwGnHO3O+fmR5Zvx2x71Dk3zjl3e26aOLzxEUZNjUYy8XBOu9mcg+rqoduzGWNpaoLly3X8qLVVu/UGBvSxtVXXL19ukz8Nw0iNWduUOD7CqK3VSCae6ATHdUaOHLo92zGWefPg3nthyRI9f1ubPi5ZouvnzQt/bMMwhg8prW1EZHrYgzvntoV9r6H4COOyyzQLra8vOmYTHLsBTRQ44oihx9i7V8Uh23YsXaqLYRhGGNLxUtuKpjlnikvz+EYM8XzLLr0UfvIT2LNHI5b+fu1mq6/X1zU12p02ZcrgY9kYi2EYpUI6gvAjwgmOEYINGzSN2XeDTZmiSQMPP6yD/42Nmurc2KjdbD09Gvls3x4Vm4EBXb93r4pNrsdYzMjTMIwwiEs0Ej0MmT9/vlu/fn3Rzt/SopHMiBHxrWQ6O9VZ4P3vVwEK3uwXLIA1a4aKwMUX51YEYgWxrk4FsaNDBXD5chvTMYzhhIhscM7NT2df6/IqIbyrwLhx8bePGaOi09gIq1YN3T53ro6x+AjkvvvgBz/IXQQSNPIMtrG+XpfOTt1+770W6RiGMZSyy1ITkbNE5Bci8rqIOBFZHLNdRORmEdkpIodE5FERmV2k5ibFO0AvWqT+Z5//vBpyeuuaeKSaU5PPUgJm5GkYRjaEjnBE5BTgAuAIIJ7blnPOfTTs8ZMwBtiIji39KM72TwGfBBajE1P/BfiDiBzrnNufh/aEIt5YzebNOrelrQ1mz1ZxiaW2VrfHI98RSCZGnpbNZhhGLBkLjogIcAfwYUDQhIKg4YoLrM+54DjnfoPW3EFE7ojTtuuBrznn7ous+wjqbn0lcFuu2xOGRMLg59oMDMDzz+tYSH2MBWqyOTXpdMm1tmoEEkYQOjqGZsHFkkwQDcMY3oTpUvsn4CrgLmA+Ki63AAuAzwD7gZ8AR+eojZlwFDAFeNCvcM4dAh6LtK8kSNQ11dSkM/dralR0WuPYnybzLct3KQEz8jQMIxvCCM5HgE3OucXOuacj6/Y65550zn0NOBe4BDgvV43MAP/7+42Y9W8EthWdRMLgx1v8HJtYh+dUc2ryXUrAjDwNw8iGMIJzHPBwzLq/ds055/4M/Aooi158EblGRNaLyPpdu3YV5JyJhKG+HubM0eimt1ejBe9btn07bNumEcZFF8UvsJbvCMSMPA3DyIawWWrB37kHgPEx219GhanQ+E6oyTHrJ5OgPk/QiHTSpEl5bZwnmTCMHatjN01NGuW0talA7d8PDQ3aJZYo8yzfEYgZeRqGkQ1hBOd1NDPN8woQO9XvGFSICs2rqLC8y68QkXrgHQyuSFpUUglDfb2Ky5e+BL/4hUYV06fDtGm6LVGBtUJEIGbkaRhGWMIIzp8YLDC/BU4Vkc+LyGwR+RjwPuDJXDQwFhEZIyJzRWQu2v7pkdfTndom3AJ8WkSaRWQOmlHXCfw4H+0JQybCkMncl0JFIN7Ic9UqWLdOH5cutcjGMIzkZGxtIyLvB74KXOice1VExgPr0bLSPiV6N7DQOfdSbpv71wJvj8TZdKdzbnEkNfom4FpgHPAU8DHn3MZUxy6ktY2fh9PdPdgXLeh/Nm+ejtVUVQ1Njw7S1aVRhncfaGlRAcq3zY1hGEYm1jY58VITkbHAPwAzUXfpHznnWpK+qQQptJdaOsIwf74KUmurLn19OrYzZYruU1+vUUxbm0YbhmEYhaTgglMpFNu8Mx6nnAIvv6zPa2o02hkYUOGpqlJHgvr6wRHOcMPcqw2jeGQiOGXnpVZJxHqpxaY6t7TA7t06L6euTuvdiOhjXZ0+f/55jW6G69yXbL3jUn0HhmHkjjBjOGelu69z7rGMW1REijGGk8zm/8kn4fvfh9de05todfXQ4xw6BJMmwerVw+/XfDrlHHp7E3vHWakFw8iefJcneJT0C7LFuUUa6ZpsAkycqCnSGzdqN9qIEdFutd5efT5hwvATG8jOO85KLRhG4QkjOP9KfMFpBE5BPct+CTwdZx+D9G+Ub7wBJ52kN8B586KJA93deqOcNg0OP1xLGgxHsnGvzrfRqWEYQ8lYcJxzNyfbHqlP8x/AZ8M1qfJJ90a5ZYuKi//VPWOGLkG6uoavWWY27tVWasEwCk/Okwacc3egkz6/kutjVwrpmmw2NOTXqiafA+aFGIzPxjsu30anhmEMJV9Zas8AaScXDDfSvVFOn54/q5p8VgbN57GDZOMdZ6UWDKPw5EtwppFFNdFKJ90b5RVX5MeqJjhgPnlycn+2TEl0bICDBzWN++yzYeHC7COebLzjrNSCYRSenAqOiFSLyN8DH0Dtbow4ZHKjzIdZZib+bLk49t69GtXs2KGp3dXV0N6efcSTjXeclVowjMITZh7OKwk21aBlAGqAHmCRc65kHJrToRS91PJBGH+2sMfu6tJrFVGnBFBRADj9dHjzTc3Ga2qKJkBk6hIQ1juumN9BqWKuDUam5NXaRkS2Ej8tegDYg7pJ/4dz7sWMDlwClKKXWj6YP1/HVXxXVzzC+rPFHvvVVzWyiR2g7+7WlO+NG/X5tGnw1rcWfuKlGZ1GsYmwRhjMSy0kpeillg8KGeGsXauPQZeEgQG16wHd13PGGdHnqVwCjPDEi2IWLYIHHoDRo8O5NhjDF/NSG6akm4qczwHz2GN7k9Egvb1Rl+vqat3e1zd4n2zGkYzEJMogvO02ePHFod+Dx74PIxeY4FQImaQin3mmjp2sXg2PP65RyKuvalQD2Q2Yxw7G19REx2xAI5uqKs1Y6+uDPXvUoPTAgcFtgOjESyM3JMtOPHBAv6vnnx/8HQSx78PIlpSpyyLyLyGP7ZxzXwz5XiMDMvEF27lTn/uSBn7ZsUOXqVNh/Pjw6dY+S+2ZZ1RYRo5Ug9G6uqj325FHwnPP6c3Oj/XU1en5d+7Ukgt+ED+eS4ARjmR2Pn190TGb1tahjhZg34eRPenMlbk5zrrgwI/EWS+R5yY4BSBdX7A77oBf/1qF6eijVVy8P1t/v978u7vh//0/mDs3szbEDjiffnpUxA4dUlGbMUPbuHHjYLHxwuS71p5/Pjo4bRMvc0cyOx8fidbU6A+HeIJjE2GNbElHcM6Ns+4G4ELgv1H36FZgSmTfK4FfA7fkpolGKtL1BbvjDt3PC1M8f7bWVlizJjPBSRRhHXOMLi0tsHmzjte0temNra5Ohai6WgXRj/PU1ER/ZdfX63wjIzck855raoLt26Op4fHYu9e+DyM7Uo7hOOf+GFyAI4F3Aac755Y45+50zv0+8rgYdYu+AJie15YbfyVdX7CWlvQNKzMh1UTSpiY46ig47rio4NTWqqCMGaNCFaSmJppKbRMvc0cyOx8/5udLmMdiE2GNXBAmaeAG4KfOubjlB5xz64H/iexnFIB0fcEgP4aV6URYhx+u7gJHHw1nnaWJC77brLs7mljg6/z09YUbRzISkyw7sb4e5szRv5NRo3Jno2QYQcIIzrFAKgesnZH9jAKQbppzU1N+DCszcV4OiuPYsSo606bpa7++qUm79GySYW5JZedTXQ0nnADXXZc7GyXDCBLGYHMfcGaKfRYCCf6sjVzT3Az33KM3kkST9urq4CMf0cl9ySZ8humn9yKS7LheyC6+WFO1/b6JxpGuuCKzNhip8d5zy5bpZxzPzue731VhufHGYrfWqETCRDi/Bt4hIt8QkYbgBhFpEJFvooL0y1w00EhNuiaWS5Yk/oXb1QWbNsHLL8P3vpdZ/Zp0I6zzztP9Nm+GRx+FJ57Q7LYnnojOB9q0SbPXbKwgP+TDDNYw0iWMl9rhwFpgBrAfrX3zBmrcORc4DHgFWOCcK6us/XK3tknHFyyeYWV7O7zwgm6fPRsmTszMQ6ulRSeXjhiROMLas0ePBSooL76okw396zFjVCSdg5kz4b/+y25+hlEO5N1LTUQmAF9FU6BHBTYdRFOlP+OcezPjAxeZcheceCTyzQJ4+GHYtQtee00H9Y88cmi3WLoeWsmcl0Wi84TGjNFoat06PW5vrwqNiArNtGmaMFBM3y5zTDaM9CmYeaeI1ADHAWOBDuAl51wCN6bSp9IEJ5X77+c/r5HE736nKbE1NXpDnTJlsPC0tmqXy9Klyc8XL8I67zztKvvjH6Pn8N16I0dG3+sdo/1YTrrn9OfNlUCYY7JhZIa5RYekkgQnVTeXn4zpXZt9pAF6Yz3pJJg0SV+HdY72N++//EXb4Wez79mjEc1hh8WvkZPJOXMpEOl0DZpjsmEMxtyijaSTMbu64JVXVGwOHYqmI1dV6dLTA+vXR32zwszNCboPVFVFyxNUVUUtbfbvjwpNVZXezD3pnDOZGeXYsdr+RYvgbW9LLwkin5VQDcNIz7zzYdQX7SPOuR2R1+ngnHOLsmqdEZpkkzFbW3WcpKdHo4igCICKQ3+/ep4tWKDrMp2bE/R385GNFx1/Luf0Bj5ypG4POg6kMx8okYdcR4e2fWAgWnvHO2ffc0/iqCddi6CVK9Pr6jMMYzDpzMM5BxWcUYHX6WB9dUUkmW9WS0s0I6yqSh9jq39WVakYbN+uUVB9vdbYSXd8JHjznjJFrWq84NTVaZQloo8jR2p04yeAQnrzgeIJRFeXik1VlQpYf78K7FFHDXXOjm1/ss/MY47JhhGedLzUqpxz1c65zYHX6SzVqY5t5I9kdjc+uhGJioDPDOvp0aW3V2/WmzbpDXvcuOQ1dmIJug80NQ0ushZ0JXAuGoH4m33QtytZUbl4DgetrYOjqdjibsm6xdK1CKqvT6/QnWEYg7ExnAol2WRM38XlnEYBzkVfx6OvT8d0Vq/WG/rYsfq+ZcsS32SDN+/6ep3f47vQIDrvZmBAjz97tq4PTlTduTN5UTkfhQVpaRncNect94MkMihNZwLr669ru9IpdGcYxmByKjgiMk5ERufymEY4kvlmNTVFxaWnJ9r9lAhfBvrAAZ2zs2GDRiXJBtBjb96NjYN905xTIZo7F048MZqV5me8T52aOCFg8mRd/+abevPfulVTrx9/XLvivNMCqJjFdp0lSkhI5TX25pvaNTh5cuI2JRNhwxjuZCw4IrJIRP5NRMYF1h0uIn8E2oHdIvKtXDbSyJxkdjfV1dHsMdCbpp98GSyM5vHbIDrus3Gjjr0kKmUQ7+btfdNOPlknmtbUaPtqa2HxYrjrLh2Mb2pKL2Osuhq2bFHBEdHutaoqHXPq6FBBDHbVeRIlJKSyCHrjDRXMCRMSt8my2AwjMWEinI8Dzc65PYF13wDeAWwB3gSWichlOWhfaERkqYi8KiJdIrJBRN5RzPYUg0S+WddcAz/4QbRLy3epeWK71vw2XxG0ulrX7d6tN/Z44ywrV+rE0tibd1sbPPmkvue442D69PhdUqkyxrq69FgjRujix5y8fc7AgIrdMccMdU/Yu1cFMZPPbMkSFaSpU5N/5mHqCRnGcCGMl9qrwB8jxdYQkZGoyDzunLsgYuj5HPCKc+68HLc33TZeDtwNLAVWRx6XACc457Ylel+5TvwMM9O+pUUnd+7ePVhsqqoGv/aRjR/rcU5vqn7+Tm2tbhs7Vq1xDjtsqJvBli3atkxsdC66SCOT2GjLs3WrLn19GmkdOqTPq6v1sa5Onx955GAn6mwmb86fn7xNEBXVdesyO7ZhlCv5nvh5OFrvxnMaUA/cAeCc2w/8iuLWw/k/wB3Ouf90zr3onPs4WsPnuiK2KS9s2JB8YD3eILZ/T3e3CkSw28qnSMfOzQniu6v6+6NdbH7uS0fH4DGNL35Rs81WrdLIatYsOPbY+KUMgl1SqTLGfLp2b6+ev6HqHfxbAAAeh0lEQVRB31NfrwXEfJbazp3pFRJLlg3nSTeLLdM5S4YxXAgT4ewG7nTO3RB5/XngZmC6c+71yLqvADc450YmPFCeEJFa1ET0CufcvYH1K4A5zrmzE703mwjnnHOGrrvsMh2TOHgQLrxw6PbFi3Vpb4cPfGDo9uuug8sv15vrVVcN3b5kCfznf+pN9H//d+j2t7xFb8Q33QRf/rKu6+mB559XMZkwQQfCvWD4sZrYPwk/V8ev9/t4l+eqKr1Gv92vO/lkjWpGjYKXXlJnARGNfGpr4dRT9XH7dl0gGl1NnKhiOHWqRjI7Az9xBga0W6y6Wo8dzH6DaDuOPloFo6FB2zdpkh63tlav/b77op/jypX6Pp8gUVur4zW1tdrtt3Wrfsa7d+t7amrgrW9V4dq8OTpW1dOj6y68EG65Rdd9+MOabBDkjDPgq1/V55dcot9DkEWLNDoEePe7VVyD/O3fwj//sz5fsEA/5/b2aIno88/X848dm5+/vU9+UqPQTZvg2muHbv/c5+Cd74RnnoHrrx+6/Stf0XavWQOf+czQ7bfcogklq1bBl740dPttt+kPl1/+Er75zaHb77pLv7+f/lRr/MTys5/p38Idd+gSy29+o39bt94K//M/Q7c/+qg+fuMb8KtfDd42ciT89rf6/ItfhIceGrw9+Ld3442a8BLkLW+Bu+/W59dfr59hkFmz4Pbb9fk11+jfX5C5czP/2/PXE4Z8RzivAsGuskuAl73YRJiGJhAUg4lANVoyIcgbwJBpfSJyjYisF5H1u3btKkT7csbatdGSwPEYOVJvxA8HvCF27YreWMeP15urnwcTi48SYLAI+ecjRgyeB+OFyJez3rdPu9Bi/2G6u/UGvW/f0HP6eTOTJiXOGPPH94kC8RgYiIpYXZ3eXLzYgEY8K1ao6P3oR9qWzk5durp0Hx+l/eEPGr0dPBg9L+g/8oYNUbHzn+PEifHblA82bNAfEG9E/tr99T31lEaxf/5z4dpiGKkIE+F8ArgFWAf0AAuALzjn/jWwz7PALufcO3PY1nTbNxV4HTjbOfdYYP2/AB9yziXs6iu3MZxFi/QGl6zSZqwJZux7gjYwInrD9ZMxq6th9Gi9wff16T7+1/+IEfp6ZEwM681ATz5Zb4Yiuu4d74j+kvPWOQMDOkgfbH+wvYlKHjz1VHS8JlZse3v1GnykdNxxGnEEzTxBj7tnj3rK+dRwH7XV1+v1zZ6tz598Uo9x7LGDPy//GfT361hRQ0Nh3aTNbNQoBfId4XwX+AkwH63s+Svg64GTzwFOBB4Ncexc0A70owXhgkwGWgvfnPwRb6Z9LLFzTmLfM3ZsdH5MTY0KSF2dvq+uTm/CRx4JZ52l4jNqlK4/6STdJ5hgALr/gQMqLh0d2o3W06OVRA8d0pv8nj26ztvOBAlmkCXKGGts1HEWb13j8ZlpEI1CmpoGjyldd50uAwN6w/bC5Q1GfSaecxo5bN+u69rbtVvthRf0PX190TGkgQE4/vjCV8w0s1Gj3AhdnkBEDkMNOvfHrJ8IHAFsdc5l6DGcG0TkKeBZ59w1gXWbgfuccwmrtQ/HCCfZe+66a3B9my1bNMNs2jR9/9atekP2AtbbqwIT9GYLeraNHh3tlvKMHq3RD6T/i9xfQ3f34Gijq0tFwJ87eGzPs8/q9oYG7RI7cGBod6KP3Hz3Xk2Ntm3MmOj8pYGBaMLCrFm6LdPyDdkS5vs3jFxTkPIEzrl9sWITWd/unHu2WGIT4VvAYhH5exE5XkSWA1OB7xWxTTknHSuW2DknmbynqUmTHlat0jTfL35RB/L9Dc5nxPX36+LFJtjN5a1lfGLB6Bgfiv37tT3JMsgSXXcwOgMVm6oqFYuRIwebgXr8OE1rq7YrXpKENxWtqdHHzs7BE0tBH/3rTZt0bCwd0smGSxcfrXZ1DXZbWLtWX3d1hSstYRj5IrTgiMgkEflHEVkuIt+PWX9qZH5OUXDO/RS4Hvgc8AywELjQOfdasdqUD1JZsQRNMLN5T6L31tfDnDkqKgcORCOZoD+b76byUUd/fzR92dPWNtjSJtUNOdgO715w+ukaZYwbFy32Fs/5ub8/2iXmRcNn4PX3q+h5I9Pu7ujk2NixKk91dXRyayoRCZPCnoyxY7Wrb8OGaNdfXZ0+bt+u699809K0jdIhlOCIyEeBrcAK1HkgaCQ/GVgLXJlt47LBOXerc26Gc67OOTcvmEBQKaSyYokXMYR5T7L3NjSo6Pgowf/qP/zw6HweT9CpYNQojXaOOUbTQJcuTW3W6W/Ivh0HDmg10SeegMce09cdHSocfsA/lupqFSNvYOr38UkRwbYeOjT4uuLR2xu10knW5mTF4sL6sC1apONMwWgLBr/euFHLfBtGKRDGS+1dwO3AZuBiNIngrzjnNgLPA+/PRQON5CSzYkk0iB3mPcneW1urAnPOObqcfnrUHdpHDX7x2Wk+wjjiiKg9TjY3ZD+/J2jDE48xY3SZMiVatiC2Sy1YJ8gfK1jiwDMwMHhuUbI2Bwf443WBtbdrxBZmgD/RMKwfS0vmjGAYhSRMWvQq4DjUJmafiNwE/Euw/o2I3A2c4ZybmdPW5plySxooJeKlW69ZE80iC46V+HTrk07S/Z3TLrw779QbdSJaW1XoLr44fjpwV5dGFP5GG5ty3dmpURCoWLzwQrTbLGhOChoB+fRvX/rad9X5pIEDB3RbQ4OuP/30xG2+7774iQ7BBATQBIQ//Sn9z7yzUzMAg2NlQUE/5hhtnyUNGPki30kD84FfOefiTNv7KzuIM8nSqFyCyQi+6mZ9vYpLcAKp7+7xkYBPUMikvHOidGBfd8d33W3fPrS78LvfhU98QmdnB01Lg04KI0fqTfrtb9fEg+pqbbNPQvATT6uqNInCucSVQn2bOzp0P1+NNF4XWHU1vPhi+t1qHR06QTaYOOHbNm2arp840ZIGjNIhnRLTsdQCB1Ls04jOhTGGCc3NcM89+ou7vT060B68OTunolJdrSLw7LO6/bbb4NVX1ULGz5uJhy/vnEycfN2d7dt1X++x5iMj0G6uOXO0O+yFFwZ3nflIZ86caHLDjh0qVjNmDDYCffzx6DjVlClRYfPze3ziQnW13vh37IhGNvHw57//fh3TSoX3dvOJE8G2ebq6LGnAKB3CRDhbgVTT204DNoU4tlGmBBMKXnstmp02alQ002v0aL059/SoML35ps7e95NOt23TLrFEv8i9MWaqCa/19TBzpi7r1ml3UmydnQkT9AY9bpw+Hz9e2+q7vZ5+WkUQtI3V1UOTLLzLwJw5+p542WLbtunnMX++JkXEViP1k2F379Zob+RIFe50CJMWbxjFJIzg/Bx4h4hcGm+jiCwBTgLuy6ZhRmmRzvwRn1DQ2Kg3256eqMnlW986eF5Lfb0KkM9mmzpVb/Y+s6qra+jg+lNPqTjU14d3bY6Njpqa9DwdHVEPNS863itt3z741KeGJlm8+91w1FEqLom6ynzG3iOPRBMmQCOgjo6oKaePbg4eVO+5dFKkk6W4d3Xp/KCXX4bvfS+7+T6GkSvCJA2MA55GDTrvA8YC7wKWoUXYmtFCbPOcc6m63koKSxqIj/c08zfxurrBNW9i/cOSzYD37gQ1kc7cM87QRz/g773XJk6M1uoJepbNmKFdYfX16gadCD9YH9s1FVvTxic3xKZwDwxo1OMteB57TF14g3gvs7Y2XWKjrr4+FaZ58zTSaGuLunIHhcb/CzY0RCfSzp6dngdaPL+59nbtKgQ9zsSJyb8vw8iGvCYNRCp9no0WNrsUOB8Q4DuR12uAReUmNkZ8wqQrJ+vqaWnR9/T1Db6Z+gF/n0rty0b7MtTOwYknavfb5MkqWrGW/p5kk1dja9rs3q3dWL7Mtk8e8IkHInrONWuGHst3I7a1RQXRt9/7sfn5QI2N0bGWMWMGpzLX12u7/Ofylrek74EWm6a+Y4dGNk1NmjU3aVL2830MI1eEmYdzFjDeOXcOMBctavY5dALoKc65s2NKFRhlTBiDyGRdPUHX6djMLj/g72/IPqXaZ1w1NurrCRP0pvzGG5lPXo0Vw9ZWFaexY6NuAr5UtT/v1KmJy0bPm6fmptOn6+vYLDHfZj9PZ8wYjW7GjdMIaty4aME4n8o8ZUpmpaqDFkSZFLkzjEITpkutH7jNOZdGHk15YV1qQwlrEJmstEBVlUYr/mYcyxNP6K/yBQuSn7OrC664Ymhp7Ysvjl/Rc+VKHZB/5hn9pX/EETqo76M2iF82IVXZ6Ew+o69/Hc4+O+p2EDtvZvZs/VzClqr2bYGhGXNNTVGRN0NPI1dk0qUWJi26HTiUci+jIujoSDzHxOPTlYP4rh7vNt3WpoLw7ndrl08isQEVqaOOSn3OvXv1l32qFOLYMaiTT4bnntMstO7uqP+bd3+eM2eweKQqG93crJNWkwnO3r3a7TVvno4Ftbfr4hMrpk3Tz9kfI2yp6o4OjdSefz46/lVXFy1I9/rrKmo+QcIwCkkYwXkULbpmDAOCcz0Skejm6Lt6goLgB9q93X8snZ16kxw/Pnm70r0hB8egxo3TdfX1cMopGgFs2aJJCI2NQ2/6Hi8WiQjOQUp0TcExpSuuUIE65pjEx0x1zkTU16uY1tQMTsH2GXT9/br9xBMzP7ZhZEuYtOjPAceKyBdFJMEUNqNSyPVcj3TMQ6+9NvUv8HTPmcyVYMYMOPNMjQj8vJxYsUmWgJDJNQXHlLJx7E7F1Kl6vqC7QxDvbn3EEZkf2zCyJYzg3AhsBD4DvCYivxWRH4rID2KW/8ptU41ikI+bYyrz0Ouvz905U1nm+BILbW2ZJyBkck3BNORsHLtT4SeXxjMbBV0/YoR2rRlGoQmTNDCQei9Aq4Em+J1VmljSQHwSJQDs3as3/nzM68jVOWPn3cRjYEDTia+9Nr0EhFzR0jK4omouzjl//uAxHJ+Y4Eti9/VFJ6d+9avRQnuGEZZMkgbCCM6R6e5bbgXPTHASk4+bYyHOOdzKMMfLUuvujlYwHTUqOtl05kybCGpkT14Fp5IxwSk/fLpzrCj5X+4rVqRf9iAdw8xSJ/Z6gw4O3t2hu1sTJGbM0O7J3t70XA0MIx75Lk9gGCVBOiWb8zlAX4rEXm9LS7RrDTRLLTjp1iaCGoXEBMcoS9K13IH8DdCXIrEJCTt3Rstp+2JzsfOMMnE1MIxsMMExypJMLHeyKaldjgSvt68vWtp71Cjd/pe/qAP31q0qvLW1uSvSlo6ruDF8sTGcADaGUz4Mt2SAsCxapKWwN2+OX9a6qkq918aMyf5zytRV3KgMbAzHqHhSFWGD3P5yL1cWLdIU6URlrX39ofPOy+48YVzFjeGHCY5RlsSWGYhHWD+ySiRRR4YvxZBsnlI6hHEVN4YfJjhGWZILy53hMN7w0ENwwgkqLN3d8Wv2nHCC7ucJ87mkcnQAS04wTHCMMiXbdOd0UqorgY4OLcI2b57OvYGhNXsmToyKd9jPxbo4jXSwpIEAljRQXoS1v/GO1SNGJHZ3LsfJkPEmwe7YoWMoyaIPn1zxjW/AJZdoFVTnBtfQqa9P/rlYEsfwxZIGjGFB2HTnShxvSBSZdHXBn/+cPLLYu1e7zi65ROfu1NSoYItoDZ0NG/T9yT6XXLuKG5WJRTgBLMIZHlTar/FkEVtXF/zpT/r81FPjl184cECfv/yyli+ILW0QrIIK8T+XSo0ajdRYhGMYSai08YZkEVt9PZx0kgrG5s3xnRbOPVf3dS6aNh2kulrf09qa+HPJZ8kFo3IwwTGGHZWWUp0qQ6yxUctq19fH73pcv17f7y1w4jFihApHss9luDk6GJkTpsS0YZQ1zc061pGsSy1sied8kMoRu6MjasaZiIYGrYcT7Arzx123Tsdr+vt1GT16aLdaVZWKdKrPJV5ZccPwWIRjDDvKyUE6nTTlMBFb8Lg1NRrB1NVp19fevfoYZGBARalUPhejPDHBMYYd5TLekK5dzKJFmWWIxR73iCPU5LOmBg47TM+xb59+Dn6S6MGDMH58aXwuRvligmMMS8phvCHd9G3ILGKLPa6Pmvr7VYQaG/Wxu1v36+/Xfe67rzQ+F6N8Kau0aBG5BrgCOBkYCxzlnNsas8844DvAeyOrfgF83Dm3N9XxLS3aKCUySd/++tfTnwQb77gdHWri6R2lndPnM2cmn0RbyqQa+zJyQyWnRY8CHgRuTrLPj4G3A38TWd4O3JX3lhlGjskkfTuTiC3ecceOHWx/09ur3WylFPFlwnCxLio3yirC8YjIfGAdMRGOiBwPvAAsdM49EVm3EHgcOM45tynZcS3CMUqJfE1QrbSJr7HYJNTCUskRTirOADqBNYF1TwAHgAVFaZFhhCRfdjGVbkNTidZFlUKlCc4UYJcLhG2R522RbUMQkWtEZL2IrN+1a1eBmmkYqclX+nY5pYWHwUollC5FFxwR+ZKIuBTLOfk6v3PudufcfOfc/EmTJuXrNIaRMflK3y6XtPCwVJp1USVRCk4DtwB3p9hnW5rHagUmiYj4KEdEBDg8ss0wygqfDHD//fqLvK1Nf70vWaIRSFhRyNdxSwE/ETbZGFU5WRdVEkUXHOdcO9Ceo8OtBcagYzl+HOcMYDSDx3UMo2zIl11MpdrQlJt10XCi6IKTCSIyBR2LmRVZdYKINALbnHO7nXMvisjvgNsic3YAbgN+lSpDzTDyic0JKRzNzXDPPToWlShLrZzHqGIpp7+too/hZMg/An8G/jvy+teR1+8N7HMl8Czw+8jyLHBVAdtoGIOwOSGFpdLHqIKU299WWc7DyRc2D8fINTYnpHi0tETHqIK//Mt9jMpTKn9bw3kejmGUFDYnpHj4MapVq7QEw6pV+trffFtaYMUKnQg7f74+rlih68uBcvzbsggngEU4Rq6p9Fn9xSSbsYsNG9R7zmer1dXpzbmjQ1Omy8E7rlT+tizCMYwSweaE5Idsxi7SLftQ6pFOOf5tmeAYRh6ptHLWpUC2glGOXVHxKMe/LRMcw8gjle5bVgyyFYxKsb4px78tExzDyCOV7ltWDLIVjHLsiopHOf5tmeAYRh4ZTnNCCkW2glGOXVHxKMe/LRMcw8gz5VDOupzIVjDKqSsqVep2uf1tWVp0AEuLNozSZ8UKzUabPDnxPq2tetON5xNXKhMmU1EuqduWFm0YRsWS7dhFOXRFVUrqdiwmOIZhlBW5EIxS74oqROp2MZwWrEstgHWpGcZQStWNuFK80uJ9vjt2aCSTLHEhGxeBXHbXWZeaYRg5oVTdiP1N+r77dID/sMNUaMpNbBJ9vjt2wHPPJU9uCJu6XczuOhMcwzDiUqrjCKUqgpmS7PMdOVKfb9yokUw8wqZuF9NpwQTHMIy4lKIFTKmKYBiSfb5Tpui41MCAjkvFI2zqdjGdFkxwDMOISylawJSiCIYl2efb1KRRm0h8wcnGRaCYTgsmOIZhxKUULWBKUQTDkuzzra+H2bNVcA4ezG3qdjGdFkxwDMOISylawJSiCIYl1efb2Ahz5sBb3pLb1O1iOi2Y4BiGEZdStIAplgjmY85KOp/voUM6JpWoamnY8xbL9NMExzCMuJSiG3ExRDBfWXHF+nyL6bRggmMYRlxK0QKm0DfpfGbFFfPzLZbTgjkNBDCnAcMYSqnN6Pez5Lu7dZyjtla70fbuVbHJpalltkah6VBqn2+mZOI0YIITwATHMMqDQt2kFy3S7rP6+sT7ZGMxUwlkIjg1+W6MYRhGrmlq0ogibFSRLh0dOmaTjNpa7ZIyUmNjOIZhGAkoxdTwcsYExzAMIwGlmBpezpjgGIZhJKAUU8PLGRMcwzCMBJRiang5Y4JjGIaRhFKvDlpOWFp0AEuLNgzDyAyr+GkYhmGUHCY4hmEYRkEwwTEMwzAKgo3hBBCRXcBrxW5HCCYC7cVuRI6olGuplOuAyrmWSrkOKK1rOdI5NymdHU1wKgARWZ/uoF2pUynXUinXAZVzLZVyHVC+12JdaoZhGEZBMMExDMMwCoIJTmVwe7EbkEMq5Voq5Tqgcq6lUq4DyvRabAzHMAzDKAgW4RiGYRgFwQTHMAzDKAgmOGWKiNwsIi5maS12u1IhImeJyC9E5PVImxfHbJfIte0UkUMi8qiIzC5Sc5OSxrXcEec7erJIzU2IiNwoIutEZJ+I7BKRX4rInJh9yuJ7SfNaSv57EZGPichfItexT0TWish7AtvL4vuIxQSnvNkENAWWE4vbnLQYA2wElgGH4mz/FPBJ4OPAKUAb8AcRaShYC9Mn1bUArGLwd3RhYZqWEecAtwILgPOAPmCViIwP7FMu38s5pL4WKP3vZQfwaeDtwHzgYeABETkpsr1cvo/BOOdsKcMFuBnYWOx2ZHkNncDiwGsBWoDPBtaNBPYD1xa7vZlcS2TdHcCvit22ENcyBugHLqqA72XQtZT597IbuLacvw+LcMqboyMh9asi8hMRObrYDcqSo4ApwIN+hXPuEPAY+ou1HFkoIm0isllE/lNEDi92g9KgAe392BN5Xc7fS+y1eMrmexGRahH5ICqeayjj78MEp3x5ClgM/A3wD+gf4BoRmVDMRmXJlMjjGzHr3whsKyd+B1wNLEK7P04FHhaRuqK2KjXLgWeAtZHX5fy9xF4LlMn3IiInikgn0A18D7jYOfccZfx91BS7AUY4nHO/Db6ODHq+AnwE+FZRGmUMwjn3k8DL50RkA2oO+x5gZXFalRwR+RawEFjonOsvdnuyIdG1lNH3sgmYC4wFPgDcKSLnFLVFWWIRToXgnOsEngeOKXZbssBn2U2OWT85sK1scc7tRAeDS/I7EpFvA1cA5znnXglsKrvvJcm1DKFUvxfnXI9z7n+dcxucczeikdoNlOH34THBqRBEpB44Dh1MLFdeRf9h3uVXRK7rHWjfdVkjIhOBIyjB70hElhO9Qb8Us7msvpcU1xJv/5L9XmKoAuoos+8jiHWplSki8g3gl8A24HDg88Bo4M5itisVIjIGeGvkZRUwXUTmArudc9tE5BbgMyLyErAZ+ByaAfbjojQ4CcmuJbLcDNyH3shmAF9F01fvL3RbkyEiK4CrgPcDe0TEjwN0Ouc6nXOuXL6XVNcS+c5upsS/FxH5GvBrYDua+HAlmvL9nnL6PoZQ7DQ5W8ItwE+AnUAP8Dr6D3RCsduVRrvPAVyc5Y7IdkFvCC1AF/BHYE6x253ptaBpqr9Hb2Q96BjBHcC0Yrc7znXEuwYH3BzYpyy+l1TXUi7fS6RNr6EJA23ovKELyu37iF3MvNMwDMMoCDaGYxiGYRQEExzDMAyjIJjgGIZhGAXBBMcwDMMoCCY4hmEYRkEwwTEMwzAKggmOYRiGURBMcAwjQ3yVyAz2v1REfhexw+8VkTdF5AURuVtEPhLZZ0acKpSplnPinOvswPa/i7P9uBDnOT2rD8wwIpi1jWHkERG5HS0fcQi1KnkVnSV+HHAR6lZwJ7AX+EKcQ9wUeYy3bWucdddEHl3k+Q9itrfHOVYN8Fm0UNmX4hxzR5x1hpEx5jRgGBnioxvnnKTYbyHwOHrDPsM5tyNm+wjgHOfcH7I9V2Tf8ajd0Suov9b7gLc55/6S4n31qCB2O+fqU53HMMJiXWqGkT989cX7YsUGwDnXm0xsQnA16iZ8R2QBja4MoyQwwTGM/PFm5LFQdVb+Ae0WuwvtvtsFfFhERhbo/IaRFBMcw8gfvwM6gAtF5BcicqWIHCMiKbvHMiXSfXcC8HvnXItzrhe1qm8ELsv1+QwjDCY4hpEnnHOvAxcDW9AEgf9Gx1Y6IllrHxaR6hydzned3RFY559fg2GUAJY0YBgZkslAfmT/KuBM4Gzg5MhzXx54FfC3zrnusOcSkUY0WeAQMDV4LBF5BngbMNs590KC91vSgFEQLMIxjDzjnBtwzj3unPuSc+4SoAm4AC0T/E7guixPcRVaWOyeOMJ1R+TRohyj6FiEYxgZkmmEk+Q4HwW+D/zSOffesOcSkb8AJ6Y43W7gCOdcV5z3W4RjFASb+GkYxWN/5DG0cEVcAE5E5/r8PsFup0b2uQQdRzKMomCCYxh5QkT+BhiFRjC9MdvGANdHXj6WxWl8V9m3nXPfStCOC9CMuWswwTGKiHWpGUaGBHzU7kyy21L0Bv9tYA/qOPAy0Ae8BXgPmrL8FHCuc+5QsnPF61ITkcOAFvSH4xHOufYEx6hC3QeOBI5zzm2K2W5dakZBsAjHMMLzkSTbrgfuBvYB70Izxc4CxqC+ac8A9wLfd871hDz/h9AI6t5EYgOatCAiP0A91K4BPhnyfIaRFRbhGIZhGAXB0qINwzCMgmCCYxiGYRQEExzDMAyjIJjgGIZhGAXBBMcwDMMoCCY4hmEYRkEwwTEMwzAKggmOYRiGURBMcAzDMIyCYIJjGIZhFIT/D2a70x0CKa0zAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(feature, test_residuals, 'bo', alpha=0.7, markersize=10)\n",
    "plt.ylabel('residuals', size=20)\n",
    "plt.xlabel('LSTAT', size=20)\n",
    "plt.plot([feature.min(), feature.max()], [0, 0], 'b--', label='0 error');\n",
    "plt.legend(prop={'size': 20});"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "AFlqdEN7Uap8"
   },
   "source": [
    "### Train Boosting model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "TrqvuB54Uub7"
   },
   "source": [
    "Returning back to boosting, let's use our very first base model as are initial prediction. We'll then perform subsequent boosting iterations to improve upon this model."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "9KHXsCZMgaEo"
   },
   "source": [
    "Let's use a decision tree as our weak learner."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "qJDbirEsaYCN"
   },
   "outputs": [],
   "source": [
    "def create_weak_model(**tree_params):\n",
    "    \"\"\"Initialize decision tree model.\"\"\"\n",
    "    model = DecisionTreeRegressor(**tree_params)\n",
    "    return model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "R8kCPP6Wfamg"
   },
   "source": [
    "Make initial prediction."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "base_model = BaseModel(y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Training parameters. \n",
    "tree_params = {\n",
    "    'max_depth': 1,\n",
    "    'criterion': 'mse',\n",
    "    'random_state': 123\n",
    "  }\n",
    "N_ESTIMATORS = 50\n",
    "BOOSTING_LR = 0.1\n",
    "\n",
    "# Initial prediction, residuals.\n",
    "train_pred = base_model.predict(x_train)\n",
    "test_pred = base_model.predict(x_test)\n",
    "train_residuals = compute_residuals(y_train, train_pred)\n",
    "test_residuals = compute_residuals(y_test, test_pred)\n",
    "\n",
    "# Boosting.\n",
    "train_rmse, test_rmse = [], []\n",
    "for _ in range(0, N_ESTIMATORS):\n",
    "    train_rmse.append(compute_rmse(train_residuals))\n",
    "    test_rmse.append(compute_rmse(test_residuals))\n",
    "    # Train weak learner.\n",
    "    model = create_weak_model(**tree_params)\n",
    "    model.fit(x_train, train_residuals)\n",
    "    # Boosting magic happens here: add the residual prediction to correct\n",
    "    # the prior model.\n",
    "    grad_approx = model.predict(x_train)\n",
    "    train_pred += (grad_approx * BOOSTING_LR)\n",
    "    train_residuals = compute_residuals(y_train, train_pred)  \n",
    "    \n",
    "    # Keep track of residuals on validation set.\n",
    "    grad_approx = model.predict(x_test)\n",
    "    test_pred += grad_approx * BOOSTING_LR\n",
    "    test_residuals = compute_residuals(y_test, test_pred)  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "XUhgTI_BH7Qk"
   },
   "source": [
    "## Interpret results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f2688381990>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "plt.plot(train_rmse, label='train error')\n",
    "plt.plot(test_rmse, label='test error')\n",
    "plt.ylabel('rmse', size=20)\n",
    "plt.xlabel('Boosting Iterations', size=20);\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "rHwfvd5JKA2m"
   },
   "source": [
    "## Let's visualize how the performance changes across iterations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 643
    },
    "colab_type": "code",
    "id": "tAM1X70onv6w",
    "outputId": "d54c68e6-2702-4b8f-80a7-3e832aee2823"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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Tlu2bOHyyy+nvLwcl8tFSUkJl1xyCVu3bk07lu3bt3PhhRdSWFhIXl4ec+fO5V//+lfGsfcWk//73//O/PnzGTZsGB6Ph4qKCi6++GKsdOwzzjiDRYsWAbBo0aKU+7Jz506g9zDbSy+9xDnnnGMLhk2YMIHvf//7tLb2lDw544wzEEIQi8W48847GT9+PG63m/Lycm666SYikUjG73gwGLLhmv5I+14z65qDNKqhzY4dO5gzZw7HH3883/rWt6ipqeHvf/87CxYs4NFHH+Wiiy6y20YiEb7whS+wevVqJk2axLXXXktHRwdPPPEEF110Ee+//z533nlnSv8333wzS5YsoaioiEsuuQSv18vKlSu5+eabee6553j++edxucwFZx9++CGf/exnEULw5S9/mbFjx9LW1sb27dv5/e9/zx133IHT6eT666/n6aefZvXq1Vx22WVpjVJLSwtnnXUW7733HieddBJXXHEFhmHw3HPPcckll7Bx40buuOMOu72Ukq9+9ausWLGCcePGcd111xGJRPjzn//MRx99dMCvrcUTTzzBqlWrWLBgAd/+9rfZtWuXvW/VqlVUVlYSjUY599xzOe6446iqqmL58uX861//4pVXXuGkk06y22/bto05c+bQ1NTEggULmD59Otu3b+f8889nwYIFWX8PKSWLFi1i6dKlFBUVUVlZSXFxMVVVVbzyyitMnDiRmTNncvnll1NQUMCKFSs477zzmD59ut1HQUHv0iD3338/V199NXl5eVx44YWMGDGCV199lbvuuot//vOf/Pvf/07bxyWXXMLrr7/OggULyM/P59lnn+Xuu++mvr6eBx98MOvvONgMWSN/qCSF+0vF9zN7OocTO3/+H/vdx2uvvcYNN9zA//zP/9jbrrvuOubMmcO3v/1t+48H4Je//CWrV69mwYIF/OMf/0DXzX/Kt9xyCyeffDJLlizhS1/6EnPnmmUN1qxZw5IlSygvL+edd96htNS890uWLGHhwoU888wz/OIXv+Dmm28GYOnSpYRCIZ5++mnOO++8lHE2Nzfbr/jXX389LS0trF69mssvvzxt1sv111/Pe++9x1133cWNN95obw+FQpx//vnceeedXHDBBbYhWrZsGStWrGD27Nm88soreDymIuptt93GrFmzDvi1tXj22Wd59tlnOeecc3p8/4svvpjc3Fxee+01pkyZYu/bsGEDs2fP5pvf/Cbvvvuuvf3aa6+lqamJe+65h8WLF9vbV6xYwfnnn5/19/jjH//I0qVLmTVrFi+88AJ+f8JRi8fj1Nebf69WppbVf7aZW7t27eK73/0uXq+Xd955h0mTJtn7rrnmGv7whz9w44038sADD/Q49pNPPmHjxo0MGzYMgJ/97GeccMIJ/OUvf2HJkiX2v7mDzZAN11iSwr0x2JLCit7x+/385Cc/Sdk2c+ZMLr30UlpaWnjqqUTo7M9//jNCCH71q1/ZBh5gxIgR/PjHPwbgT3/6U0p7gB/96Ecpf2y6rvPLX/4STdNS2lvk5OT02FZYWIimZfen09TUxCOPPMLMmTNTDDyAx+PhrrvuQkrJo48mpJ4sr+/OO++0DTzAsGHD7O/WX/pzbS3OO++8HgYe4C9/+QstLS3cdtttKQYeYNq0afznf/4n7733Hps2bQKgqqqKF154gbFjx3Ldddf1OMfpp5+e9ff47W9/C5jedrKBB1OTvaxs/yRHHnnkESKRCNddd12KgQfTaPt8Ph5++OG0YbO77rrLNvAAeXl5XHrppRiGwaFc1T9kPfnKyZUs/WApHm9m3fiWUAuLpi86iKPqyWB4yEcKJ510Ej5fz9LAZ5xxBkuXLuW9997jsssuIxAIsH37do455pgef4gAZ511FgDvvfeevc3yKq19yUyYMIFRo0axY8cOWltb8fv9XHTRRdx7772cf/75XHDBBXzuc5/jlFNO6fdE4Nq1a4nH4wghuPXWW3vst2L7yYVg3n33XTRNY968eWmvxUDI9tomc/LJJ6fta82aNQB88MEHab/Txx9/DJjfacqUKfZ9mDdvHg6HI+0YVq9e3ed3aG9vZ8OGDZSUlHDiiSf22X4g9PbvpLCwkBNPPJHXXnuNLVu2cMIJJ6Tsnzmzp8JAeXk5YL79HCqGtJFftmEZwUgw7eTrgZAUVvROSUn3sgQmludtTXpZ/8/ktVnbW1pa7G3ZHLN7925aWlrw+/2cfPLJvP766/zsZz/jiSee4OGHHwZg4sSJ3HLLLVx88cVZfaempibANPZr167N2C4YTEhbt7a2MmzYMJxOZ492A33lz/baZnMu6zv98Y9/7PWc1ney+u5rDH1h3c9jjslYdG6/Gci/LYt0cXrrLXOwlSX7w5AN1xwKSWFF79TVda8iaVJba9afsV7Prf9b27tTU1OT0m6gx8yZM4dnnnmG5uZm/v3vf/PjH/+Yuro6LrnkEl588cWsvpPV33/9138hpcz488orr6Qcs2/fPtvLTybT+Psi22ubTCZFRKvtBx980Ot3st4MrPZ9jaEvLCO6d+/erNoPhIH8OzncGbJGHhKSwoumL0JKSX2w3py9n76Ixy98XC2EOsi8++67aQsmWClu1iu6z+dj3Lhx7N27l23btvVobxnM5OwO69h06XLbt2+nqqqKsWPHpvXG3G43c+fO5ac//Sm/+c1vAHNCz8IKQaTz1k4++WQ0TeP1119P+53TcdJJJ2EYBm+88UaPfQNdVZvttc2G2bNnA2T9nay+33jjjbTXKNvvlJeXx7Rp06irq0sJxWWit/vS11jTjamlpYX3338fj8dzRKnGDmkjD6ZHf82sa3jxGy+y9qq1vPiNF7lm1jXKgz8EtLa28tOf/jRl27p16/jrX/+K3+9n4cJE6OyKK65ASsn3vve9lD/ixsZGbr/9drtNcnuAO+64g4aGBnt7PB7nhhtuwDAMrrzySnv7m2++SWdnZ48xWt5o8gKa4cOHA7B79+4e7UeMGMGll17KunXruP3229ManE8++YQdO3bYn6387h/+8IeEQiF7+759+1JSLftDf65tXyxatIiCggJuu+023nnnnR77DcNIMZKjRo3i7LPPZseOHfzud79LabtixYqs4vEW3/3udwH41re+1SPEZBiG7WlD7/clE1//+tdxOp389re/Zfv27Sn7fvzjH9PW1sbXv/71QS+2fSAZsjF5xeHHaaedxp/+9CfefvttTjnlFDuX2zAM7r///pQUvxtuuIGVK1eyYsUKTjjhBL74xS/S0dHB448/Tn19PTfeeGPKxOXcuXO58cYbufvuu5k2bRoXXHABeXl5rFy5kg0bNjBv3jy+973v2e3vvvtuXn75ZU499VTGjh2L1+tl48aNrFy5ksLCQq666iq77ZlnnommafzgBz9gw4YNFBaadXh/9KMfAfC73/2Obdu28ZOf/ISHH36YefPmUVJSQnV1NZs3b2bt2rUsW7aMsWPHAnDxxRfz97//nX/84x9MmzaN8847j2g0yhNPPMGsWbP45JNPDui17Yvhw4fzxBNPsHDhQmbPns38+fOZOnUqQgj27NnDmjVraGpqSnlA3XfffcyZM4frr7+e559/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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "feature = df_test.LSTAT\n",
    "ix = np.argsort(feature)\n",
    "\n",
    "# Pick a predictive feature for plotting.\n",
    "plt.plot(feature, y_test, 'go', alpha=0.7, markersize=10)\n",
    "plt.plot(feature[ix], test_pred[ix], label='boosted prediction', linewidth=2)\n",
    "\n",
    "plt.xlabel('feature', size=20)\n",
    "plt.legend(prop={'size': 20});"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Copyright 2019 Google Inc. Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License"
   ]
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "collapsed_sections": [],
   "name": "ASL_a_boosting_from_scratch.ipynb",
   "provenance": [],
   "version": "0.3.2"
  },
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
